Linux下Docker的安装及使用 |
您所在的位置:网站首页 › docker 容器日志清理 › Linux下Docker的安装及使用 |
本文目录层级较多,想完全显示可参考此文章,简单点击几下即可: 博客园SimpleMemory主题如何浮动目录显示 1.背景类似于电脑,要在朋友的电脑上跑你写的Java程序,就得检查他电脑有没有安装Java环境. 类似的,要想在别的电脑上跑你写的Python程序,又得检查那台电脑有没有装python. 如何让自己写的程序换到别的电脑上后,可以便捷的运行起来? 将程序和程序的环境打包迁移,是一种解决方案. 为啥不用虚拟机?虚拟机安装太麻烦,就好比一个完整的操作系统,启动起来很费时间. 所以,你可以简单的理解为:Docker就是一个轻量级的虚拟机(只虚拟你需要的软件运行环境,冗余的一点都不要). 网上看到的另一个Docker入门网站,还不错.https://docker.easydoc.net/ 2.安装服务器版本:CentOS 8.2 64位 2.1 安装yum-utils yum install -y yum-utils 2.2 yum配置阿里Docker源关于yum的配置,可以参考我这篇文章: CentOS更换yum源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo解决problem with installed package podman-1.6.4-10.的报错 yum erase podman buildah解决yum命令报错问题 CentOS 8 EOL如何切换源? 为了使用yum-config-manager命令, 执行--add-repo操作. 2.添加阿里docker源干嘛?在最开始的时候,我们的yum仓库里的docker安装包是上面的几个,执行了yum源添加后,阿里带过来了新的docker安装包。 阿里镜像站 Docker-CE介绍 containerd.io、docker-ce-cli、docker-ce的区别 3.Docker服务相关 3.1 启动 # 启动 systemctl start docker # 开机自启 systemctl enable docker # 禁用开机自启 systemctl disable docker # docker服务是否开机自启 systemctl is-enabled docker # 已启动的服务列表 systemctl list-unit-files|grep enabled 3.2 停止 systemctl stop docker 3.3 重启 systemctl restart docker 3.4 查看docker状态 systemctl status docker 4.Docker主要概念类比win 镜像: 程序安装包 容器: 安装好的程序 (镜像的)仓库: 放安装包的仓库. 4.1 仓库、镜像和容器镜像 程序安装包 Docker镜像里包含了已打包的应用程序及其所依赖的环境。它包含应用程序可用的文件系统和其他元数据,如镜像运行时的可执行文件路径。 镜像仓库 安装包的仓库 Docker镜像仓库用于存放Docker镜像,以及促进不同人和不同电脑之间共享这些镜像。当编译镜像时,要么可以在编译它的电脑上运行,要么可以先上传镜像到一个镜像仓库,然后下载到另外一台电脑上并运行它。某些仓库是公开的,允许所有人从中拉取镜像,同时也有一些是私有的,仅部分人和机器可接入。 容器 安装好的软件 Docker容器通常是一个Linux容器,它基于Docker镜像被创建。一个运行中的容器是一个运行在Docker主机上的进程,但它和主机,以及所有运行在主机上的其他进程都是隔离的。这个进程也是资源受限的,意味着它只能访问和使用分配给它的资源(CPU、内存等)。 4.2 打包、分发和部署打包 制作镜像 把你软件本身、所需要的依赖、三方库等制作成一个"安装包" 分发 上传镜像仓库 将安装包上传到软件仓库,别人可以方便的下载和安装 部署 启动镜像,获得运行着的容器.win开发好后. 拿着下载好的安装包,用命令行运行起来(安装包中带着运行环境) 4.3 一个简单的流程 4.2.1 开发者在开发环境(本地机器)开发好应用后,制作出镜像。Docker执行命令,在本地机器构建出镜像并存储。 4.2.2 开发者执行上传镜像命令,上传本地镜像到镜像仓库.Docker收到命令后,将本地镜像上传到镜像仓库。 4.2.3 开发者向生产环境(远端服务器)发送运行镜像命令.生产环境服务器收到命令后,Docker会从镜像仓库拉取镜像,然后基于镜像运行容器。 类比win: 程序的安装包 官方镜像仓库 Docker镜像(image)详解 5.1 查看镜像 docker images 5.2 搜索镜像 docker search 镜像名称 5.3 拉取镜像 docker pull 镜像名称:版本号 5.4 删除镜像 docker rmi 镜像名称:版本号 5.5 其他 5.5.1 镜像信息 vim /var/lib/docker/image/overlay2/repositories.jsonrepositories.json文件中保存了一些基本信息 类比win: 已经安装好的程序 6.1 查看容器列表 # 查看正在运行的容器 docker ps # 查看所有容器 docker ps -a 6.2 创建容器容器创建后,在容器列表中即可看到该容器(相当于安装好程序) 以后用后文的启、停、删就可以操作该容器了. # eg: \是换行的意思 docker run -d -p 1337:1337 \ --network kong-net \ --name konga \ -e "NODE_ENV=production" \ -e "DB_ADAPTER=postgres" \ -e "DB_URI=postgresql://kong:[email protected]:5432/konga" \ pantsel/kongalinux中-和--的区别? -后面一般跟简写,大多数是一个字母,如: ls -l--后面一般跟长的完整名字,如: chkconfig --addrun参数 -rm 在容器退出时自动清理容器内部的文件系统 在Docker容器退出时,默认容器内部的文件系统仍然被保留,以方便调试并保留用户数据. 但是,对于前台运行的容器,由于其只是在开发调试过程中短期运行,其用户数据并无保留的必要. 启动时设置-rm选项,这样在容器退出时就能够自动清理容器内部的文件系统. -i 保持容器运行 -p 端口映射 -e 传递环境变量 -t 为容器重新分配一个伪输入终端 -d 以守护进程模式运行容器,退出后容器不会停止 -it 创建一个交互式容器,推出后容器容器停止运行 -id 创建一个守护容器;退出后容器不停止运行 –-name 为创建的容器命名 --restart 重启策略 no 默认策略,在容器退出时不重启容器 on-failure 在容器非正常退出时(退出状态非0),才会重启容器 on-failure:3 在容器非正常退出时重启容器,最多重启3次 always 在容器退出时总是重启容器 unless-stopped 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器 6.3 进入容器 docker exec -it 容器名称 /bin/bash # eg:进入一个叫konga的容器 docker exec -it konga /bin/bash # 在容器中执行了一个ping命令 ping 127.0.0.1 # 退出当前容器 exit 6.4 启动容器 docker start 容器名称 6.5 停止容器 docker stop 容器名称 6.6 删除容器 docker rm 容器名称 #删除所有容器 docker rm `docker ps -aq` 6.7 查看容器详细信息inspect 视察、检查 docker inspect 容器名称 6.8 其他 6.8.1 容器文件位置 cd /var/lib/docker/containers查看所有容器,其中的id:eb67258c80d1与上方文件夹对应 docker ps -a # 显示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES eb67258c80d1 mongo "docker-entrypoint.s…" 7 days ago Exited (0) 6 days ago mongo 6.8.2 从容器里拷贝文件(出来到)宿主机手动拷贝,后面可以使用-v命令直接挂载(映射)数据。 docker cp CONTAINERID:/path/file.type /home # eg: 拷贝eb67258c80d1中的/home/test.txt到宿主机的/home文件夹下 docker cp eb67258c80d1:/home/test.txt /home # 容器停止了也可以拷贝,只要容器还在,容器里面的文件就也还在. 6.8.3 设置容器自动重启重启docker的时候,想要自动重启一些容器. 启动的时候,你可以添加--restart=always来实现. # -d: 后台运行 docker run -d --restart=always --name 设置容器名 使用的镜像也可以通过update来更新已有的容器参数 docker update --restart=always 容器ID(或者容器名) 6.8.4 查看容器的启动参数通过python的pip工具安装runlike pip install runlike执行runlike查看启动参数,例如: # runlike -s yang-portainer docker run --name=yang-portainer --hostname=xxx --mac-address=xxx --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --volume=/root/portainer:/data --volume=/var/run/docker.sock:/var/run/docker.sock --volume=/data --workdir=/ -p 9000:9000 --restart=always --runtime=runc --detach=true 6053537/portainer # runlike -p yang-portainer docker run \ --name=yang-portainer \ --hostname=xxx \ --mac-address=xx \ --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ --volume=/root/portainer:/data \ --volume=/var/run/docker.sock:/var/run/docker.sock \ --volume=/data \ --workdir=/ \ -p 9000:9000 \ --restart=always \ --runtime=runc \ --detach=true \ 6053537/portainer 7.网络相关容器可以比拟做一个独立的系统环境,能配置自己网络,所以说容器里的localhost不一定等于宿主机的localhost 网络模式 bridge:桥接docker(默认创建时,不指定网络驱动,将使用bridge模式) none:不配置网络 host:和宿主机共享网络 例如:当你在容器上使用80端口访问其他应用,使用的是宿主机的80端口. container:容器网络连通(用的少,局限很大) Linux查看网络信息 # if没有打错. # 这里面能看到docker相关的网络. ifconfig 7.1 查看docker下的网络列表 docker network ls 7.2 查看单个网络详细信息 docker network inspect networkname 7.3 创建网络 # 不指定网络驱动时,默认创建的是bridge网络. docker network create networkname 7.4 删除网络 docker network rm networkname 8.日志相关 docker logs [OPTIONS] CONTAINER # Options参数 --details: 显示更多的信息 --follow(-f): 跟踪实时日志 --since string: 显示自某个timestamp之后的日志,或相对时间,如40m(即40分钟) --tail string: 从日志末尾显示多少行日志, 默认是all --timestamps(-t): 显示时间戳 --until string: 显示自某个timestamp之前的日志,或相对时间,如40m(即40分钟示例 # 查看容器mysql 最近30分钟的日志: docker logs --since 30m mysql # 查看容器mysql 某时间之后的日志: docker logs -t --since="2019-11-02T13:23:37" mysql #查看容器mysql 某时间段日志: docker logs -t --since="2019-11-02T13:23:37" --until "2019-11-03T12:23:37" mysql 9.配置国内加速 9.1 手动修改 vim /etc/docker/daemon.json # 加入镜像信息,注意不要有这行注释,json是不支持注释的,不然启动会报错 { "registry-mirrors" : [ "https://mirror.ccs.tencentyun.com", "http://registry.docker-cn.com", "http://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com" ], "insecure-registries" : [ "registry.docker-cn.com", "docker.mirrors.ustc.edu.cn" ], "debug" : true, "experimental" : true }重启docker systemctl restart docker.service镜像说明 "https://mirror.ccs.tencentyun.com" //腾讯 "http://registry.docker-cn.com" //docker官方提供的中国镜像 "http://docker.mirrors.ustc.edu.cn" //中国科学技术大学 "http://hub-mirror.c.163.com" //网易 9.2 DaoCloud镜像站帮助文档 Linux # 下载sh脚本 手动下载浏览器访问: https://get.daocloud.io/daotools/set_mirror.sh |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |